package com.only4play.practice.common.enums.pay;



import com.baomidou.mybatisplus.annotation.EnumValue;
import com.only4play.codegen.support.constants.BaseEnum;

import java.util.Optional;

/**
 * @author mengdy
 */

public enum PayModeType implements BaseEnum<PayModeType> {
    // 支付方式
    // 【微信】1=付款码支付 2=公众号支付(JSAPI支付) 3=扫码支付(Native支付) 4=APP支付 5=H5支付 6=小程序支付 7=人脸支付 8=企业付款到零钱/银行卡 9=现金红包

    // 个位数表示微信支付方式
    WECHAT_PAY_PAYMENT_CODE(1,"微信付款码支付"),
    // 微信公众号支付
    WECHAT_PAY_JSAPI(2,"微信公众号支付"),
    // 微信扫码支付
    WECHAT_PAY_NATIVE(3,"微信扫码支付"),
    // 微信APP支付
    WECHAT_PAY_APP(4,"APP支付"),
    // 微信H5支付
    WECHAT_PAY_H5(5,"H5支付"),
    // 微信小程序支付
    WECHAT_PAY_MINI_PROGRAM(6,"小程序支付"),
    // 微信人脸支付
    WECHAT_PAY_FACE(7,"人脸支付"),
    // 微信企业付款到零钱
    WECHAT_PAY_ENTERPRISE_PAY(8,"企业付款到零钱/银行卡"),
    // 微信银行卡支付
    WECHAT_PAY_CASH_RED_PACK(9,"现金红包"),

    // 2 开头表示支付宝支付方式
    // 当面付之付款码支付 商家扫用户付款码
    ALIPAY_PAY_FACE_PAY_CODE(20,"当面付之付款码支付"),
    // 当面付之扫码支付 用户扫商家二维码
    ALIPAY_PAY_SCAN_CODE(21,"当面付之扫码支付"),
    // APP支付
    ALIPAY_PAY_APP(22,"APP支付"),
    // 手机网站支付
    ALIPAY_PAY_H5(23,"手机网站支付"),
    // JSAPI支付
    ALIPAY_PAY_JSAPI(24,"JSAPI支付"),
    //


    // 支付宝当面付之声波支付
    ALIPAY_PAY_WAVE_CODE(31,"当面付之声波支付"),


    // 咔咖支付
    ALIPAY_PAY_UKA(51,"咔咖支付"),

    ;
    PayModeType(Integer code, String name) {
        this.code = code;
        this.name = name;
    }


    @EnumValue
    private Integer code;
    private String name;
    @Override
    public Integer getCode() {
        return this.code;
    }

    @Override
    public String getName() {
        return this.name;
    }

    public static Optional<PayModeType> of(Integer code) {
        return Optional.ofNullable(BaseEnum.parseByCode(PayModeType.class, code));
    }
}
